<?php

	class EbXMLToolkit
	{
		static public function xmlFormat($string)
	    {
			return strtr($string, array(
                '&'  => '&',
                '>'  => '>',
                '<'  => '<',
                '"'  => '&quot;',
                '\'' => '&apos;' ));
			
			//return encoding($string);
	    }
	    	    
	    static public function objectToXML($value,$root = 'root')
	    {
	    	$buffer = '<'.$root.'>';
	    	
	    	if (is_array($value))
	    	{
	    		foreach ($value AS $item)
	    		{
	    			$buffer .= self::objectToXML($item,'item');
	    		}
	    	}
	    	else
	    	{	    	
		    	foreach ($value AS $key=>$value)
		    	{
		    		$buffer .= '<'.self::xmlFormat($key).'>'.self::xmlFormat($value).'</'.self::xmlFormat($key).'>';
		    	}
	    	}
	    	
	    	return $buffer.'</'.$root.'>';
	    }
	    
		static function detectUTF8($string)
		{
		        return preg_match('%(?:
		        [\xC2-\xDF][\x80-\xBF]        # non-overlong 2-byte
		        |\xE0[\xA0-\xBF][\x80-\xBF]               # excluding overlongs
		        |[\xE1-\xEC\xEE\xEF][\x80-\xBF]{2}      # straight 3-byte
		        |\xED[\x80-\x9F][\x80-\xBF]               # excluding surrogates
		        |\xF0[\x90-\xBF][\x80-\xBF]{2}    # planes 1-3
		        |[\xF1-\xF3][\x80-\xBF]{3}                  # planes 4-15
		        |\xF4[\x80-\x8F][\x80-\xBF]{2}    # plane 16
		        )+%xs', $string);
		}

		static function cp1251_utf8( $sInput )
		{
		    $sOutput = "";
		
		    for ( $i = 0; $i < strlen( $sInput ); $i++ )
		    {
		        $iAscii = ord( $sInput[$i] );
		
		        if ( $iAscii >= 192 && $iAscii <= 255 )
		            $sOutput .=  "&#".( 1040 + ( $iAscii - 192 ) ).";";
		        else if ( $iAscii == 168 )
		            $sOutput .= "&#".( 1025 ).";";
		        else if ( $iAscii == 184 )
		            $sOutput .= "&#".( 1105 ).";";
		        else
		            $sOutput .= $sInput[$i];
		    }
		    
		    return $sOutput;
		}

		static function encoding($string)
		{
		    if (function_exists('iconv')) {    
		        if (@!iconv('utf-8', 'cp1251', $string)) {
		            $string = iconv('cp1251', 'utf-8', $string);
		        }
		        return $string;
		    } else {
		        if (detectUTF8($string)) {
		            return $string;        
		        } else {
		            return cp1251_utf8($string);
		        }
		    }
		}	    
		
	}